package com.cy.pj.common.annottion;


import java.lang.annotation.ElementType;
import java.lang.annotation.Retention;
import java.lang.annotation.RetentionPolicy;
import java.lang.annotation.Target;

import java.lang.annotation.ElementType;
import java.lang.annotation.Retention;
import java.lang.annotation.RetentionPolicy;
import java.lang.annotation.Target;

/**
 * 自定义注解，希望通过此注解对一些业务方法做标记(对方法进行描述)
 * ，在面向切面编程中将这些做好标记的方法为我们的切入点方法。
 */
@Retention(RetentionPolicy.RUNTIME)
@Target(ElementType.METHOD)
public @interface RequiredLog {
    String operation();
}


//代理对象(与目标对象--继承或是has a兄弟)-->
// 切面对象(调用目标方法,返回给代理对象)-->通知(调用切入点方法)--->service(目标对对象)

//AOP的流程
//1.定义一个注解(标记service中的方法),被该注解描述的方法是切入点方法(service中的方法)
//2.定义一个切面类(切面对象--切入点的定义(@Pointcut注解用于定义切入点,@annotation(注解类全名--自定义注解的类))
// ,通知方法的定义(@Around(切入点的定义),joinPoint.proceed();//调用切入点方法))----@Aspect